import http from 'utils/http'
// 封装一个方法, 专门用于获取城市
// 思路:
// 1. 优先从本地缓存中读取
// 2. 如果本地缓存中有, 直接返回
// 3. 没有, 就调用百度地图, 获取当前位置
// 4. 发送ajax请求, 得到后台的城市信息
// 5. 返回城市信息的同时, 也要往本地存一份
const CURRENT_CITY = 'current_city'

export function setCity(city) {
  localStorage.setItem(CURRENT_CITY, JSON.stringify(city))
}

export function getCurrentCity(callback) {
  return new Promise(function (resolve, reject) {
    const city = JSON.parse(localStorage.getItem(CURRENT_CITY))
    if (city) {
      resolve(city)
      callback && callback(city)
    } else {
      // 调用百度地图
      const myCity = new window.BMap.LocalCity()
      myCity.get(async function (result) {
        // 发送ajax, 10秒才能拿到res
        const res = await http.get(`/area/info?name=${result.name}`)
        const { status, body } = res.data
        if (status === 200) {
          // 存到本地
          setCity(body)
          resolve(body)
          callback && callback(body)
        } else {
          reject('获取城市信息失败')
          callback && callback('获取城市信息失败')
        }
      })
    }
  })
}
